home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / RIncludes / Balloons.r < prev    next >
Encoding:
Text File  |  1997-08-12  |  25.7 KB  |  596 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Balloons.r
  3.  
  4.      Contains:    Balloon Help Package Interfaces.
  5.  
  6.      Version:    Technology:    System 7.0
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1990-1993, 1995-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18.  
  19. #ifndef __BALLOONS_R__
  20. #define __BALLOONS_R__
  21.  
  22. #ifndef __CONDITIONALMACROS_R__
  23. #include "ConditionalMacros.r"
  24. #endif
  25.  
  26. #define hmBalloonHelpVersion             0x0002                /*  The real version of the Help Manager  */
  27. #define kHMHelpMenuID                     (-16490)            /*  Resource ID and menu ID of help menu  */
  28. #define kHMAboutHelpItem                 1                    /*  help menu item number of About Balloon Help…  */
  29. #define kHMShowBalloonsItem             3                    /*  help menu item number of Show/Hide Balloons  */
  30. #define kHMHelpID                         (-5696)                /*  ID of various Help Mgr package resources (in Pack14 range)  */
  31. #define kBalloonWDEFID                     126                    /*  Resource ID of the WDEF proc used in standard balloons  */
  32.  
  33.                                                             /*  Options for Help Manager resources in 'hmnu', 'hdlg', 'hrct', 'hovr', & 'hfdr' resources  */
  34. #define hmDefaultOptions                 0                    /*  default options for help manager resources  */
  35. #define hmUseSubID                         1                    /*  treat resID's in resources as subID's of driver base ID (for Desk Accessories)  */
  36. #define hmAbsoluteCoords                 2                    /*  ignore window port origin and treat rectangles as absolute coords (local to window)  */
  37.  
  38. #define hmSaveBitsNoWindow                 4                    /*  don't create a window, just blast bits on screen. No update event is generated  */
  39. #define hmSaveBitsWindow                 8                    /*  create a window, but restore bits behind window when window goes away & generate update event  */
  40. #define hmMatchInTitle                     16                    /*  for hwin resources, match string anywhere in window title string  */
  41.  
  42.  
  43. #define HelpMgrVersion            2            /* version of Help Manager */
  44.  
  45. /* Generic defines for the switch items used in 'hrct', 'hmnu', & 'hdlg's    */
  46. #define    HMStringItemID            1            /* pstring is used in help message */
  47. #define    HMPictItemID            2            /* 'PICT' resource ID is used in help message */
  48. #define    HMStringResItemID        3            /* 'STR#' resource ID and index is used in help message */
  49. #define HMTEResItemID            6            /* Styled Text Edit resources are used in help message */
  50. #define HMSTRResItemID            7            /* 'STR ' resource ID is used in help message */
  51. #define HMSkipItemID            256            /* don't display a balloon */
  52. #define HMCompareItemID            512            /* for hmnu resources, compare menu item to string and use help msg if match */
  53. #define HMNamedResourceID        1024        /* for hmnu resources, use menu item as call to GetNamedResource() to fetch resource */
  54. #define HMTrackCntlID            2048        /* not yet implemented, reserved */
  55.  
  56. /*----------------------------hmnu • Help Mgr Menu Balloon Template----------------------------*/
  57.  
  58. type 'hmnu' {
  59.         integer;                                    /* Help Version */
  60.         longint;                                    /* Options */
  61.         integer;                                    /* Balloon ProcID */
  62.         integer;                                     /* Balloon variant */
  63.         integer = $$CountOf(HMenuArray);            /* Count of menu items (below) */
  64.  
  65.         switch {            /* Special Message for missing array items */
  66.                 case HMStringItem:
  67. hmnuMissStringBeg:        integer = (hmnuMissStringEnd - hmnuMissStringBeg) / 8;
  68.                         key int = HMStringItemID;
  69.                         pstring;            /* missing HMenuArray items (Enabled)  */
  70.                         pstring;            /* missing HMenuArray items (Disabled)  */
  71.                         pstring;            /* missing HMenuArray items (checked) */
  72.                         pstring;            /* missing HMenuArray items (other)  */
  73.                         align word;            /* always word align the code for the pstring */
  74. hmnuMissStringEnd:                        
  75.                 case HMPictItem:
  76. hmnuMissPictBeg:        integer = (hmnuMissPictEnd - hmnuMissPictBeg) / 8;
  77.                         key int = HMPictItemID;
  78.                         integer;            /* use for missing HMenuArray items  */
  79.                         integer;            /* use for missing HMenuArray items  */
  80.                         integer;            /* use for missing HMenuArray items  */
  81.                         integer;            /* use for missing HMenuArray items  */
  82. hmnuMissPictEnd:
  83.                 case HMStringResItem:
  84. hmnuMissStringResBeg:    integer = (hmnuMissStringResEnd - hmnuMissStringResBeg) / 8;
  85.                         key int = HMStringResItemID;
  86.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  87.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  88.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  89.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  90. hmnuMissStringResEnd:
  91.                 case HMTEResItem:
  92. hmnuMissTEResBeg:        integer = (hmnuMissTEResEnd - hmnuMissTEResBeg) / 8;
  93.                         key int = HMTEResItemID;
  94.                         integer;            /* use for missing HMenuArray items */
  95.                         integer;            /* use for missing HMenuArray items */
  96.                         integer;            /* use for missing HMenuArray items */
  97.                         integer;            /* use for missing HMenuArray items */
  98. hmnuMissTEResEnd:
  99.                 case HMSTRResItem:
  100. hmnuMissSTRResBeg:        integer = (hmnuMissSTRResEnd - hmnuMissSTRResBeg) / 8;
  101.                         key int = HMSTRResItemID;
  102.                         integer;            /* use for missing HMenuArray items */
  103.                         integer;            /* use for missing HMenuArray items */
  104.                         integer;            /* use for missing HMenuArray items */
  105.                         integer;            /* use for missing HMenuArray items */
  106. hmnuMissSTRResEnd:
  107.                 case HMSkipItem:
  108. hmnuMissSkipBeg:        integer = (hmnuMissSkipEnd - hmnuMissSkipBeg) / 8;
  109.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  110. hmnuMissSkipEnd:                        
  111.             };
  112.             
  113.         array HMenuArray {
  114.                 switch {
  115.                     case HMStringItem:
  116. hmnuStringBeg:            integer = (hmnuStringEnd[$$ArrayIndex(HMenuArray)] - hmnuStringBeg[$$ArrayIndex(HMenuArray)]) / 8;
  117.                         key int = HMStringItemID;
  118.                         pstring;            /* Enabled menu message string  */
  119.                         pstring;            /* Disabled menu message string */
  120.                         pstring;            /* Checked menu message string */
  121.                         pstring;            /* other menu message string */
  122.                         align word;
  123. hmnuStringEnd:                        
  124.                     case HMPictItem:
  125. hmnuPictBeg:            integer = (hmnuPictEnd[$$ArrayIndex(HMenuArray)] - hmnuPictBeg[$$ArrayIndex(HMenuArray)]) / 8;
  126.                         key int = HMPictItemID;
  127.                         integer;            /* Enabled menu message pict ID  */
  128.                         integer;            /* Disabled menu message pict ID */
  129.                         integer;            /* Checked menu message pict ID */
  130.                         integer;            /* other menu message pict ID */        
  131. hmnuPictEnd:                                                
  132.                     case HMStringResItem:
  133. hmnuStringResBeg:        integer = (hmnuStringResEnd[$$ArrayIndex(HMenuArray)] - hmnuStringResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  134.                         key int = HMStringResItemID;
  135.                         integer; integer;    /* Enabled STR# res ID, index # */
  136.                         integer; integer;    /* Disabled STR# res ID, index # */
  137.                         integer; integer;    /* Checked menu message STR# res ID, index # */
  138.                         integer; integer;    /* other menu message STR# res ID, index # */
  139. hmnuStringResEnd:                        
  140.                     case HMTEResItem:
  141. hmnuTEResBeg:            integer = (hmnuTEResEnd[$$ArrayIndex(HMenuArray)] - hmnuTEResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  142.                         key int = HMTEResItemID;
  143.                         integer;            /* Enabled menu message TERes ID */
  144.                         integer;            /* Disabled menu message TERes ID */
  145.                         integer;            /* Checked message TERes ID */
  146.                         integer;            /* other menu message TERes ID */    
  147. hmnuTEResEnd:                        
  148.                     case HMSTRResItem:
  149. hmnuSTRResBeg:            integer = (hmnuSTRResEnd[$$ArrayIndex(HMenuArray)] - hmnuSTRResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  150.                         key int = HMSTRResItemID;
  151.                         integer;            /* Enabled menu message STR ID */
  152.                         integer;            /* Disabled menu message STR ID */
  153.                         integer;            /* Checked message STR ID */
  154.                         integer;            /* other menu message STR ID */    
  155. hmnuSTRResEnd:                        
  156.                     case HMSkipItem:
  157. hmnuSkipBeg:            integer = (hmnuSkipEnd[$$ArrayIndex(HMenuArray)] - hmnuSkipBeg[$$ArrayIndex(HMenuArray)]) / 8;
  158.                         key int = HMSkipItemID;
  159. hmnuSkipEnd:                        
  160.                     case HMCompareItem:
  161. hmnuCompareBeg:            integer = (hmnuCompareEnd[$$ArrayIndex(HMenuArray)] - hmnuCompareBeg[$$ArrayIndex(HMenuArray)]) / 8;
  162.                         key int = HMCompareItemID;
  163.                         pstring;            /* if itemstr matches, use this item, else goto next item */
  164.                         align word;
  165.                         
  166.                         switch {                    /* case the message type */
  167.                     
  168.                             case HMStringItem:
  169.                                 key int = HMStringItemID;
  170.                                 pstring;            /* Enabled menu message string  */
  171.                                 pstring;            /* Disabled menu message string */
  172.                                 pstring;            /* Checked menu message string */
  173.                                 pstring;            /* other menu message string */
  174.                                 align word;
  175.  
  176.                             case HMPictItem:
  177.                                 key int = HMPictItemID;
  178.                                 integer;            /* Enabled menu message pict ID  */
  179.                                 integer;            /* Disabled menu message pict ID */
  180.                                 integer;            /* Checked menu message pict */
  181.                                 integer;            /* other menu message pict */        
  182.  
  183.                             case HMStringResItem:
  184.                                 key int = HMStringResItemID;
  185.                                 integer; integer;    /* Enabled STR# res ID, index # */
  186.                                 integer; integer;    /* Disabled STR# res ID, index # */
  187.                                 integer; integer;    /* Checked menu message STR# res ID, index # */
  188.                                 integer; integer;    /* other menu message STR# res ID, index # */
  189.  
  190.                             case HMTEResItem:
  191.                                 key int = HMTEResItemID;
  192.                                 integer;            /* Enabled menu message TERes ID */
  193.                                 integer;            /* Disabled menu message TERes ID */
  194.                                 integer;            /* Checked menu message TERes ID */
  195.                                 integer;            /* other menu message TERes ID */    
  196.  
  197.                             case HMSTRResItem:
  198.                                 key int = HMSTRResItemID;
  199.                                 integer;            /* Enabled menu message STR ID */
  200.                                 integer;            /* Disabled menu message STR ID */
  201.                                 integer;            /* Checked menu message STR ID */
  202.                                 integer;            /* other menu message STR ID */    
  203.  
  204.                             case HMSkipItem:
  205.                                 key int = HMSkipItemID;
  206.                         };
  207. hmnuCompareEnd:                
  208.                     case HMNamedResourceItem:
  209. hmnuNamedResBeg:        integer = (hmnuNamedResEnd[$$ArrayIndex(HMenuArray)] - hmnuNamedResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  210.                         key int = HMNamedResourceID;
  211.                         literal longint;    /*    res type of resource to fetch, using item name    */
  212. hmnuNamedResEnd:                        
  213.                 };
  214.         };
  215. };
  216.  
  217. /*----------------------------hdlg • Help Mgr Dialog Balloon Template--------------------------*/
  218. type 'hdlg' {
  219.         integer;                                    /* Help Version */
  220.         integer;                                    /* item # (0-based) of first DITL item */
  221.         longint;                                    /* Options    */
  222.         integer;                                    /* Balloon ProcID */
  223.         integer;                                     /* Balloon variant */
  224.         
  225.         integer = $$CountOf(HDialogArray);            /* Count of HDialogArray items    */
  226.         
  227.         switch {            /* Special Messages for missing array items */
  228.                 case HMStringItem:
  229. hdlgMissStringBeg:        integer = (hdlgMissStringEnd - hdlgMissStringBeg) / 8;
  230.                         key int = HMStringItemID;
  231.                         point;                            /* tip            */
  232.                         rect;                            /* hotRect        */
  233.                         pstring;            /* use for missing HDialogArray items  */
  234.                         pstring;            /* use for missing HDialogArray items  */
  235.                         pstring;            /* use for missing HDialogArray items  */
  236.                         pstring;            /* use for missing HDialogArray items  */
  237.                         align word;            /* always word align the code for the pstring */
  238. hdlgMissStringEnd:                        
  239.                 case HMPictItem:
  240. hdlgMissPictBeg:        integer = (hdlgMissPictEnd - hdlgMissPictBeg) / 8;
  241.                         key int = HMPictItemID;
  242.                         point;                            /* tip            */
  243.                         rect;                            /* hotRect        */
  244.                         integer;            /* use for missing HDialogArray items  */
  245.                         integer;            /* use for missing HDialogArray items  */
  246.                         integer;            /* use for missing HDialogArray items  */
  247.                         integer;            /* use for missing HDialogArray items  */
  248. hdlgMissPictEnd:
  249.                 case HMStringResItem:
  250. hdlgMissStringResBeg:    integer = (hdlgMissStringResEnd - hdlgMissStringResBeg) / 8;
  251.                         key int = HMStringResItemID;
  252.                         point;                            /* tip            */
  253.                         rect;                            /* hotRect        */
  254.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  255.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  256.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  257.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  258. hdlgMissStringResEnd:
  259.                 case HMTEResItem:
  260. hdlgMissTEResBeg:        integer = (hdlgMissTEResEnd - hdlgMissTEResBeg) / 8;
  261.                         key int = HMTEResItemID;
  262.                         point;                            /* tip            */
  263.                         rect;                            /* hotRect        */
  264.                         integer;            /* use for missing HDialogArray items */
  265.                         integer;            /* use for missing HDialogArray items */
  266.                         integer;            /* use for missing HDialogArray items */
  267.                         integer;            /* use for missing HDialogArray items */
  268. hdlgMissTEResEnd:
  269.                 case HMSTRResItem:
  270. hdlgMissSTRResBeg:        integer = (hdlgMissSTRResEnd - hdlgMissSTRResBeg) / 8;
  271.                         key int = HMSTRResItemID;
  272.                         point;                            /* tip            */
  273.                         rect;                            /* hotRect        */
  274.                         integer;            /* use for missing HDialogArray items */
  275.                         integer;            /* use for missing HDialogArray items */
  276.                         integer;            /* use for missing HDialogArray items */
  277.                         integer;            /* use for missing HDialogArray items */
  278. hdlgMissSTRResEnd:
  279.                 case HMSkipItem:
  280. hdlgMissSkipBeg:        integer = (hdlgMissSkipEnd - hdlgMissSkipBeg) / 8;
  281.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  282. hdlgMissSkipEnd:                        
  283.             };
  284.  
  285.         /* this is an array of records corresponding to dialog items in a dialog */
  286.         array HDialogArray {
  287.                 switch {
  288.                     case HMStringItem:
  289. hdlgStringBeg:            integer = (hdlgStringEnd[$$ArrayIndex(HDialogArray)] - hdlgStringBeg[$$ArrayIndex(HDialogArray)]) / 8;
  290.                         key int = HMStringItemID;        /* helpType        */
  291.                         point;                            /* tip            */
  292.                         rect;                            /* hotRect        */
  293.                         pstring;        /* Enabled dialog item message string    */
  294.                         pstring;        /* Disabled dialog item message string    */
  295.                         pstring;        /* Checked dialog item message string    */
  296.                         pstring;        /* other dialog item message string        */
  297.                         align word;        /* always word align the code */
  298. hdlgStringEnd:                        
  299.                     case HMPictItem:
  300. hdlgPictBeg:            integer = (hdlgPictEnd[$$ArrayIndex(HDialogArray)] - hdlgPictBeg[$$ArrayIndex(HDialogArray)]) / 8;
  301.                         key int = HMPictItemID;            /* helpType        */
  302.                         point;                            /* tip            */
  303.                         rect;                            /* hotRect        */
  304.                         integer;        /* Enabled dialog item message pict ID    */
  305.                         integer;        /* Disabled dialog item message pict ID    */
  306.                         integer;        /* Checked dialog item message pict ID    */
  307.                         integer;        /* other dialog item message pict ID     */    
  308. hdlgPictEnd:                        
  309.                     case HMStringResItem:
  310. hdlgStringResBeg:        integer = (hdlgStringResEnd[$$ArrayIndex(HDialogArray)] - hdlgStringResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  311.                         key int = HMStringResItemID;    /* helpType        */
  312.                         point;                            /* tip            */
  313.                         rect;                            /* hotRect        */
  314.                         integer; integer;    /* Enabled STR# res ID, index #        */
  315.                         integer; integer;    /* Disabled STR# res ID, index #    */
  316.                         integer; integer;    /* Checked STR# res ID, index #        */
  317.                         integer; integer;    /* other STR# res ID, index #        */
  318. hdlgStringResEnd:                        
  319.                     case HMTEResItem:
  320. hdlgTEResBeg:            integer = (hdlgTEResEnd[$$ArrayIndex(HDialogArray)] - hdlgTEResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  321.                         key int = HMTEResItemID;        /* helpType        */
  322.                         point;                            /* tip            */
  323.                         rect;                            /* hotRect        */
  324.                         integer;        /* Enabled dialog item message TERes ID */
  325.                         integer;        /* Disabled item message TERes ID        */
  326.                         integer;        /* Checked item message TERes ID        */
  327.                         integer;        /* other item message TERes ID            */    
  328. hdlgTEResEnd:                        
  329.                     case HMSTRResItem:
  330. hdlgSTRResBeg:            integer = (hdlgSTRResEnd[$$ArrayIndex(HDialogArray)] - hdlgSTRResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  331.                         key int = HMSTRResItemID;        /* helpType        */
  332.                         point;                            /* tip            */
  333.                         rect;                            /* hotRect        */
  334.                         integer;        /* Enabled dialog item message STR ID    */
  335.                         integer;        /* Disabled dialog item message STR ID    */
  336.                         integer;        /* Checked dialog item message STR ID    */
  337.                         integer;        /* other dialog item message STR ID        */    
  338. hdlgSTRResEnd:                        
  339.                     case HMSkipItem:
  340. hdlgSkipBeg:            integer = (hdlgSkipEnd[$$ArrayIndex(HDialogArray)] - hdlgSkipBeg[$$ArrayIndex(HDialogArray)]) / 8;
  341.                         key int = HMSkipItemID;
  342. hdlgSkipEnd:                        
  343.                 };
  344.         };
  345. };
  346.  
  347. /*----------------------------hwin • Help Mgr Window Balloon Template--------------------------*/
  348. type 'hwin' {
  349.         integer;                                    /* Help Version */
  350.         longint;                                    /* Options                */
  351.         integer = $$CountOf(HWinArray);                /* Count                */
  352.         array HWinArray {
  353.                 integer;            /* resource ID for help template         */
  354.                 literal longint;    /* res type of template (hdlg or hrct)    */
  355.                 integer;            /* len of comparison string             */
  356.                 pstring;            /* comparison string for window title    */
  357.                 align word;
  358.         };
  359. };
  360.  
  361. /*----------------------------hrct • Help Mgr Rectangle List Template-------------------------*/
  362. type 'hrct' {
  363.         integer;                                    /* Help Version         */
  364.         longint;                                    /* Options                */
  365.         integer;                                    /* Balloon ProcID        */
  366.         integer;                                     /* Balloon Variant        */
  367.         integer = $$CountOf(HRectArray);            /* Count of hrct Msgs    */
  368.  
  369.         array HRectArray {
  370.                 switch {
  371.                     case HMStringItem:
  372. hrctStringBeg:            integer = (hrctStringEnd[$$ArrayIndex(HRectArray)] - hrctStringBeg[$$ArrayIndex(HRectArray)]) / 8;
  373.                         key int = HMStringItemID;    /* helpType            */
  374.                         point;                        /* tip                */
  375.                         rect;                        /* hotRect            */
  376.                         pstring;                    /* STR255            */
  377.                         align word;                    /* keep aligned        */
  378. hrctStringEnd:
  379.                     case HMPictItem:
  380. hrctPictBeg:            integer = (hrctPictEnd[$$ArrayIndex(HRectArray)] - hrctPictBeg[$$ArrayIndex(HRectArray)]) / 8;
  381.                         key int = HMPictItemID;        /* helpType            */
  382.                         point;                        /* tip                */
  383.                         rect;                        /* hotRect            */
  384.                         integer;                    /* Picture Res ID    */
  385. hrctPictEnd:
  386.                     case HMStringResItem:
  387. hrctStringResBeg:        integer = (hrctStringResEnd[$$ArrayIndex(HRectArray)] - hrctStringResBeg[$$ArrayIndex(HRectArray)]) / 8;
  388.                         key int = HMStringResItemID;/* helpType            */
  389.                         point;                        /* tip                */
  390.                         rect;                        /* hotRect            */
  391.                         integer; integer;            /* STR# ID, index #    */
  392. hrctStringResEnd:
  393.                     case HMTEResItem:
  394. hrctTEResBeg:            integer = (hrctTEResEnd[$$ArrayIndex(HRectArray)] - hrctTEResBeg[$$ArrayIndex(HRectArray)]) / 8;
  395.                         key int = HMTEResItemID;    /* helpType            */
  396.                         point;                        /* tip                */
  397.                         rect;                        /* hotRect            */
  398.                         integer;                    /* TextEdit res ID    */
  399. hrctTEResEnd:
  400.                     case HMSTRResItem:
  401. hrctSTRResBeg:            integer = (hrctSTRResEnd[$$ArrayIndex(HRectArray)] - hrctSTRResBeg[$$ArrayIndex(HRectArray)]) / 8;
  402.                         key int = HMSTRResItemID;    /* helpType            */
  403.                         point;                        /* tip                */
  404.                         rect;                        /* hotRect            */
  405.                         integer;                    /* STR res ID        */
  406. hrctSTRResEnd:
  407.                     case HMSkipItem:
  408. hrctSkipBeg:            integer = (hrctSkipEnd[$$ArrayIndex(HRectArray)] - hrctSkipBeg[$$ArrayIndex(HRectArray)]) / 8;
  409.                         key int = HMSkipItemID;        /* skip item (leave a hole) */
  410.                         point;                        /* tip options (keep same structure as other items)    */
  411.                         rect;                        /* skip this rect            */
  412. hrctSkipEnd:
  413.                     case HMTrackControlStringItem:
  414. hrctTCStringBeg:        integer = (hrctTCStringEnd[$$ArrayIndex(HRectArray)] - hrctTCStringBeg[$$ArrayIndex(HRectArray)]) / 8;
  415.                         key int = HMStringItemID+HMTrackCntlID;
  416.                         point;                        /* tip                */
  417.                         rect;                        /* hotRect            */
  418.                         pstring;                    /* Enabled control message string        */
  419.                         pstring;                    /* Disabled control message string        */
  420.                         pstring;                    /* Checked control message string        */
  421.                         pstring;                    /* other control message string            */
  422.                         align word;                    /* keep aligned        */
  423. hrctTCStringEnd:                        
  424.                     case HMTrackControlPictItem:
  425. hrctTCPictBeg:            integer = (hrctTCPictEnd[$$ArrayIndex(HRectArray)] - hrctTCPictBeg[$$ArrayIndex(HRectArray)]) / 8;
  426.                         key int = HMPictItemID+HMTrackCntlID;
  427.                         point;                        /* tip                */
  428.                         rect;                        /* hotRect            */
  429.                         integer;                    /* Enabled control message pict ID        */
  430.                         integer;                    /* Disabled control message pict ID        */
  431.                         integer;                    /* Checked control message pict ID        */
  432.                         integer;                    /* other control message pict ID         */    
  433. hrctTCPictEnd:                        
  434.                     case HMTrackControlStringResItem:
  435. hrctTCStringResBeg:        integer = (hrctTCStringResEnd[$$ArrayIndex(HRectArray)] - hrctTCStringResBeg[$$ArrayIndex(HRectArray)]) / 8;
  436.                         key int = HMStringResItemID+HMTrackCntlID;
  437.                         point;                        /* tip                */
  438.                         rect;                        /* hotRect            */
  439.                         integer; integer;            /* Enabled STR# res ID, index #        */
  440.                         integer; integer;            /* Disabled STR# res ID, index #    */
  441.                         integer; integer;            /* Checked STR# res ID, index #        */
  442.                         integer; integer;            /* other STR# res ID, index #        */
  443. hrctTCStringResEnd:                        
  444.                     case HMTrackControlTEResItem:
  445. hrctTCTEResBeg:            integer = (hrctTCTEResEnd[$$ArrayIndex(HRectArray)] - hrctTCTEResBeg[$$ArrayIndex(HRectArray)]) / 8;
  446.                         key int = HMTEResItemID+HMTrackCntlID;
  447.                         point;                        /* tip                */
  448.                         rect;                        /* hotRect            */
  449.                         integer;                    /* Enabled TextEdit hdl spec ID        */
  450.                         integer;                    /* Disabled TextEdit hdl spec ID    */
  451.                         integer;                    /* Checked TextEdit hdl spec ID        */
  452.                         integer;                    /* other TextEdit hdl spec ID        */
  453. hrctTCTEResEnd:                        
  454.                     case HMTrackControlSTRResItem:
  455. hrctTCSTRResBeg:        integer = (hrctTCSTRResEnd[$$ArrayIndex(HRectArray)] - hrctTCSTRResBeg[$$ArrayIndex(HRectArray)]) / 8;
  456.                         key int = HMSTRResItemID+HMTrackCntlID;
  457.                         point;                        /* tip                */
  458.                         rect;                        /* hotRect            */
  459.                         integer;                    /* Enabled control message STR ID        */
  460.                         integer;                    /* Disabled control message STR ID        */
  461.                         integer;                    /* Checked control message STR ID        */
  462.                         integer;                    /* other control message STR ID            */    
  463. hrctTCSTRResEnd:                        
  464.                 };
  465.         };
  466. };
  467.  
  468.  
  469.  
  470. /*----------------------------hovr • Help Mgr Override Resource Template-------------------------*/
  471.  
  472. type 'hovr' {
  473.         integer;                                    /* Help Version */
  474.         longint;                                    /* Options */
  475.         integer;                                    /* Balloon ProcID */
  476.         integer;                                     /* Balloon variant */
  477.         integer = $$CountOf(HOverrideArray);        /* Count of array items (below) */
  478.  
  479.         switch {            /* Special Message for missing array items */
  480.                 case HMStringItem:
  481. hovrMissStringBeg:        integer = (hovrMissStringEnd - hovrMissStringBeg) / 8;
  482.                         key int = HMStringItemID;
  483.                         pstring;                /* missing HOverrideArray item  */
  484.                         align word;                /* always word align the code for the pstring */
  485. hovrMissStringEnd:                        
  486.                 case HMPictItem:
  487. hovrMissPictBeg:        integer = (hovrMissPictEnd - hovrMissPictBeg) / 8;
  488.                         key int = HMPictItemID;
  489.                         integer;                /* missing HOverrideArray item  */
  490. hovrMissPictEnd:
  491.                 case HMStringResItem:
  492. hovrMissStringResBeg:    integer = (hovrMissStringResEnd - hovrMissStringResBeg) / 8;
  493.                         key int = HMStringResItemID;
  494.                         integer; integer;        /* Miss or 0 HOverrideArray STR# res ID, index # */
  495. hovrMissStringResEnd:
  496.                 case HMTEResItem:
  497. hovrMissTEResBeg:        integer = (hovrMissTEResEnd - hovrMissTEResBeg) / 8;
  498.                         key int = HMTEResItemID;
  499.                         integer;                /* use for missing HOverrideArray items */
  500. hovrMissTEResEnd:
  501.                 case HMSTRResItem:
  502. hovrMissSTRResBeg:        integer = (hovrMissSTRResEnd - hovrMissSTRResBeg) / 8;
  503.                         key int = HMSTRResItemID;
  504.                         integer;                /* use for missing HOverrideArray items */
  505. hovrMissSTRResEnd:
  506.                 case HMSkipItem:
  507. hovrMissSkipBeg:        integer = (hovrMissSkipEnd - hovrMissSkipBeg) / 8;
  508.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  509. hovrMissSkipEnd:                        
  510.             };
  511.             
  512.         array HOverrideArray {
  513.                 switch {
  514.                     case HMStringItem:
  515. hovrStringBeg:            integer = (hovrStringEnd[$$ArrayIndex(HOverrideArray)] - hovrStringBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  516.                         key int = HMStringItemID;
  517.                         pstring;            /* message string  */
  518.                         align word;
  519. hovrStringEnd:                        
  520.                     case HMPictItem:
  521. hovrPictBeg:            integer = (hovrPictEnd[$$ArrayIndex(HOverrideArray)] - hovrPictBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  522.                         key int = HMPictItemID;
  523.                         integer;            /* message pict ID  */
  524. hovrPictEnd:                                                
  525.                     case HMStringResItem:
  526. hovrStringResBeg:        integer = (hovrStringResEnd[$$ArrayIndex(HOverrideArray)] - hovrStringResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  527.                         key int = HMStringResItemID;
  528.                         integer; integer;    /* STR# res ID, index # */
  529. hovrStringResEnd:                        
  530.                     case HMTEResItem:
  531. hovrTEResBeg:            integer = (hovrTEResEnd[$$ArrayIndex(HOverrideArray)] - hovrTEResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  532.                         key int = HMTEResItemID;
  533.                         integer;            /* message TERes ID */
  534. hovrTEResEnd:                        
  535.                     case HMSTRResItem:
  536. hovrSTRResBeg:            integer = (hovrSTRResEnd[$$ArrayIndex(HOverrideArray)] - hovrSTRResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  537.                         key int = HMSTRResItemID;
  538.                         integer;            /* message STR ID */
  539. hovrSTRResEnd:                        
  540.                     case HMSkipItem:
  541. hovrSkipBeg:            integer = (hovrSkipEnd[$$ArrayIndex(HOverrideArray)] - hovrSkipBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  542.                         key int = HMSkipItemID;
  543. hovrSkipEnd:                        
  544.                 };
  545.         };
  546. };
  547.  
  548.  
  549. /*----------------------------hfdr • Help Mgr Finder Application Balloon Template-------------------------*/
  550. type 'hfdr' {
  551.         integer;                                    /* Help Version         */
  552.         longint;                                    /* Options                */
  553.         integer;                                    /* Balloon ProcID        */
  554.         integer;                                     /* Balloon Variant        */
  555.         integer = $$CountOf(HFdrArray);                /* Count of hfdr Msgs    */
  556.  
  557.         array HFdrArray {
  558.                 switch {
  559.                     case HMStringItem:
  560. hfdrStringBeg:            integer = (hfdrStringEnd[$$ArrayIndex(HFdrArray)] - hfdrStringBeg[$$ArrayIndex(HFdrArray)]) / 8;
  561.                         key int = HMStringItemID;    /* helpType            */
  562.                         pstring;                    /* STR255            */
  563.                         align word;                    /* keep aligned        */
  564. hfdrStringEnd:
  565.                     case HMPictItem:
  566. hfdrPictBeg:            integer = (hfdrPictEnd[$$ArrayIndex(HFdrArray)] - hfdrPictBeg[$$ArrayIndex(HFdrArray)]) / 8;
  567.                         key int = HMPictItemID;        /* helpType            */
  568.                         integer;                    /* Picture Res ID    */
  569. hfdrPictEnd:
  570.                     case HMStringResItem:
  571. hfdrStringResBeg:        integer = (hfdrStringResEnd[$$ArrayIndex(HFdrArray)] - hfdrStringResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  572.                         key int = HMStringResItemID;/* helpType            */
  573.                         integer; integer;            /* STR# ID, index #    */
  574. hfdrStringResEnd:
  575.                     case HMTEResItem:
  576. hfdrTEResBeg:            integer = (hfdrTEResEnd[$$ArrayIndex(HFdrArray)] - hfdrTEResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  577.                         key int = HMTEResItemID;    /* helpType            */
  578.                         integer;                    /* TextEdit res ID    */
  579. hfdrTEResEnd:
  580.                     case HMSTRResItem:
  581. hfdrSTRResBeg:            integer = (hfdrSTRResEnd[$$ArrayIndex(HFdrArray)] - hfdrSTRResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  582.                         key int = HMSTRResItemID;    /* helpType            */
  583.                         integer;                    /* STR res ID        */
  584. hfdrSTRResEnd:
  585.                     case HMSkipItem:
  586. hfdrSkipBeg:            integer = (hfdrSkipEnd[$$ArrayIndex(HFdrArray)] - hfdrSkipBeg[$$ArrayIndex(HFdrArray)]) / 8;
  587.                         key int = HMSkipItemID;        /* skip item (leave a hole) */
  588. hfdrSkipEnd:
  589.                 };
  590.         };
  591. };
  592.  
  593.  
  594. #endif /* __BALLOONS_R__ */
  595.  
  596.